# 学习set 集合

# 创建空集合
i = set()  # 若需要创建一个空集合必须使用set()而不是{},{}是创建一个空字典
i1 = {}  # 若需要创建一个空集合必须使用set()而不是{},{}是创建一个空字典

# 利用特性达到去重效果
basket = {'apple', 'orange', 'pear', 'apple', 'orange', 'pear'}
print(basket)  # 在这里我们得出,集合set是具有去重特性的
if 'orange' in basket:  # 通过if语句验证orange是否存在集合basket
    print("basket变量中具有orange元素")
if 'apple' in basket:  # 通过if语句验证apple是否存在集合basket
    print("basket变量中具有apple元素")

#  集合的各个运算符的使用
operation1 = {1, 2, 2, 3, "深", 4, 5, 'a', 'b', 'c', 'b', "高"}
operation2 = {6, 2, 7, 1, 8, "山", 9, 10, 'd', 'e', 'f', 'b', "高"}
operation3 = operation2 - operation1  # 集合operation2有operation1没有的元素并赋值给operation3 运算符号'-'
operation4 = operation2 | operation1  # 集合operation1和operation2的所有元素并赋值给变量operation4 运算符号'|'
operation5 = operation1 & operation2  # 集合operation1和operation2都包含的元素并赋值给变量operation5 运算符号'&'
operation6 = operation1 ^ operation2  # 集合operation1和operation2两个集合独有的元素并赋值给变量operation6 运算符号'^'

# 推导式
set1 = {x for x in "abjfdslajf高ksfjaksljd申fdsjalfj深slkfj" if x not in "abj申"}  # 我要将这里面的字符串"高深"提取出并设置为不可更改的数据类型
set2 = list(set1) # 将集合转换成列表
set3 = [x for x in set2 if x in "高深"]
if set3[0] not in "高":  # 判断set3内的元素是否有序
    print("反了")
    set3.reverse()  # 利用内置方法reverse反转列表
set4 = tuple(set3)  # 利用内置函数tuple()将可更改的列表数据结构转换成不可更改的元组数据结构
set5 = set4[0]  # 反复确认
# set4[0] = 2  # 通过这个赋值操作得出，元组是不可更改数据结构

print(2)
